/**
 * Copyright (c) 2017-2018, zengjintao (1913188966@qq.com).
 * <p>
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/lgpl-3.0.txt
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jfast.framework.orm.dataSource;

import com.jfast.framework.orm.config.DataSourceConfig;
import com.jfast.framework.orm.config.DataSourceManager;
import com.jfast.framework.orm.config.TableMapping;

public abstract class AbstractDataSource implements DataSourceFactory {

	private DataSourceConfig dataSourceConfig;
	
	@Override
	public DataSourceConfig getDataSourceConfig() {
		return dataSourceConfig;
	}

	public void setDataSourceConfig(DataSourceConfig dataSourceConfig) {
		this.dataSourceConfig = dataSourceConfig;
	}
	
	@Override
	public String getConfigName() {
		return dataSourceConfig.getName();
	}
	
	public String getTableMappingConfig(){
		return dataSourceConfig.getBasePackage();
	}
	
	public AbstractDataSource(DataSourceConfig dataSourceConfig){
		this.dataSourceConfig = dataSourceConfig;
		initDataSource(dataSourceConfig);
		TableMapping tableMapping = new TableMapping(dataSourceConfig);
		tableMapping.initTableMapping();
		DataSourceManager.addTableMapping(dataSourceConfig.getBasePackage(), tableMapping);
	}
	
	abstract void initDataSource(DataSourceConfig dataSourceConfig);
}
